type Equal<T, U> = (<R>() => R extends T ? 1 : 2) extends (<R>() => R extends U ? 1 : 2) ? true : false

type Includes<T extends readonly any[], U> = T extends [infer R, ...infer P]
 ? Equal<R, U> extends true ? true : Includes<P, U> 
 : false

